package com.ahdy.service;

import com.ahdy.entity.Medication;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 药物信息服务接口
 */
@Service
public interface MedicationService {

    /**
     * 添加药物信息
     *
     * @param medication 药物实体
     * @return 新增药物ID
     */
    Integer addMedication(Medication medication);

    /**
     * 更新药物信息
     *
     * @param medication 药物实体
     * @return 影响行数
     */
    int updateMedication(Medication medication);

    /**
     * 删除药物信息
     *
     * @param id 药物ID
     * @return 影响行数
     */
    int deleteMedication(Integer id);

    /**
     * 根据ID查询药物信息
     *
     * @param id 药物ID
     * @return 药物实体
     */
    Medication getMedicationById(Integer id);

    /**
     * 查询所有药物信息
     *
     * @return 药物列表
     */
    List<Medication> getAllMedications();

    /**
     * 根据名称模糊查询药物信息
     *
     * @param name 药物名称
     * @return 药物列表
     */
    List<Medication> getMedicationsByNameLike(String name);

    /**
     * 根据类型查询药物信息
     *
     * @param type 药物类型
     * @return 药物列表
     */
    List<Medication> getMedicationsByType(Medication.MedicationType type);

    /**
     * 根据生产厂家模糊查询药物信息
     *
     * @param manufacturer 生产厂家名称
     * @return 药物列表
     */
    List<Medication> getMedicationsByManufacturerLike(String manufacturer);

    /**
     * 获取药物使用统计信息
     *
     * @return 统计数据
     */
    List<Map<String, Object>> getMedicationUsageStatistics();
}
